package com.littleHan.brushQuestions.web.specificTopic.service;

import com.littleHan.brushQuestions.exception.FailedSettingException;
import com.littleHan.brushQuestions.exception.FailedToDeleteException;
import com.littleHan.brushQuestions.exception.FailedToInsertException;
import com.littleHan.brushQuestions.web.specificTopic.pojo.vo.TopicPageVo;
import com.littleHan.brushQuestions.web.start.pojo.Comment;
import com.littleHan.brushQuestions.web.start.pojo.Topic;

import java.util.List;
import java.util.Map;

public interface SpecificTopicService {

    /**
     * 根据题目id获取题目具体信息
     * @param id 题目id
     * @return
     */
    Map<String, Object> getTopicInfo(String id);

    /**
     * 根据用户id查看收藏表里是否收藏了当前题目
     * @param userId 用户id
     * @param id 题目的id
     * @return
     */
    boolean checkIsCollectTopic(String userId, String id);


    /**
     * 根据用户id取消或者收藏该题目
     * @param userId 用户id
     * @param topic 携带当前题目的状态（用户是否取消或收藏布尔型）、题目id
     * @return
     */
    boolean collectAndCancel(String userId, Topic topic) throws FailedSettingException;

    /**
     * 获取评论区列表(暂时不开发点赞功能)
     * @param topicPageVo 题目id、分页参数
     * @param userId 用户id
     * @return
     */
    Map<String, Object> getCommentListOrderByTime(TopicPageVo topicPageVo,String userId);

    /**
     * 用户评论
     * @param comment 评论内容、题目id
     * @param userId 用户id
     */
    void userComment(Comment comment, String userId) throws FailedToInsertException;

    /**
     * 用户删除自己的评论
     * @param id 评论id
     * @param userId 用户id
     */
    void deleteUserComment(String id, String userId) throws FailedToDeleteException;

    /**
     * 用户点赞或者取消点赞
     * @param value
     * @param commentId 当前评论id
     * @param userId 用户id
     * @return
     */
    Boolean commentLike(boolean value,String commentId, String userId );

    /**
     * 更新点赞表
     * @return
     */
    String updateCommentLike();
}
